package cn.openea.perpartner.meily.web.service;

import cn.openea.perpartner.meily.web.entity.Role;
import cn.openea.perpartner.meily.web.entity.UserRole;
import cn.openea.perpartner.meily.web.entity.dto.BtnRoleDto;
import com.github.yulichang.base.MPJBaseService;

import java.util.List;

/**
 * @author Weird077
 * @description TODO
 * @date 2022-12-23 9:11
 */
public interface IRoleService extends MPJBaseService<Role> {

    List<Role> selectRoleList(Role role);

    List<Role> getByRoleKey(String roleKey);

    List<Role> getByRoleKeyAndUserId(String roleKey, String userId);

    boolean checkAdmin(String userId);
    /**
     * 根据用户ID查询角色权限
     *
     * @param userId 用户ID
     * @return 角色列表
     */
    List<Role> selectRolesByUserId(String userId);
    /**
     * 校验角色名称是否唯一
     *
     * @param role 角色信息
     * @return 结果
     */
    boolean checkRoleNameUnique(Role role);

    /**
     * 校验角色权限是否唯一
     *
     * @param role 角色信息
     * @return 结果
     */
    boolean checkRoleKeyUnique(Role role);
    /**
     * 新增保存角色信息
     *
     * @param role 角色信息
     * @return 结果
     */
    boolean insertRole(Role role);
    /**
     * 修改保存角色信息
     *
     * @param role 角色信息
     * @return 结果
     */
    boolean updateRole(Role role);
    /**
     * 取消授权用户角色
     *
     * @param userRole 用户和角色关联信息
     * @return 结果
     */
    boolean deleteAuthUser(UserRole userRole);
    /**
     * 批量选择授权用户角色
     *
     * @param roleId 角色ID
     * @param userIds 需要删除的用户数据ID
     * @return 结果
     */
    boolean insertAuthUsers(Long roleId, String userIds);

    /**
     * 批量取消授权用户角色
     *
     * @param roleId 角色ID
     * @param userIds 需要删除的用户数据ID
     * @return 结果
     */
    boolean deleteAuthUsers(Long roleId, String userIds);

    /**
     * 批量删除角色信息
     *
     * @param idList 需要删除的数据ID
     * @throws Exception
     */
    boolean deleteRoleByIds(List<Long> idList);


    BtnRoleDto checkUserRole(BtnRoleDto dto);
}
